﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Datos.Reclamos;
using Entidades.Reclamos;
using Datos.Reclamos.DAL;

namespace Negocio.Reclamos
{
    public class RecHojaReclamacionBLL : IRecHojaReclamacionBLL
    {
        #region ATRIBUTOS

        private IRecHojaReclamacionDAL _hojaReclamacionDAL;
       
        #endregion

        #region CONSTRUCTOR

        public RecHojaReclamacionBLL()
        {
            this._hojaReclamacionDAL = new RecHojaReclamacionDAL();
        }

        #endregion

        #region METODOS PARA LOS LIBROS DE RECLAMACIONES

        public List<RecLibro> listarLibros()
        {
            List<RecLibro> lista = new List<RecLibro>();
            try
            {
                lista = _hojaReclamacionDAL.listarLibros();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lista;
        }
        
        #endregion

        #region METODOS PARA LOS PRODUCTOS/SERVICIOS OFRECIDOS

        public List<RecTipoBienContratado> listarBienes()
        {
            List<RecTipoBienContratado> lista = new List<RecTipoBienContratado>();
            try
            {
                lista = _hojaReclamacionDAL.listarBienes();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lista;
        }

        #endregion

        #region METODOS PARA LAS HOJAS DE RECLAMACION

        public int insertarHojaReclamacion(RecHojaReclamacion hoja)
        {
            try
            {
                hoja.IdHoja = _hojaReclamacionDAL.insertar(hoja);
            }
            catch (Exception ex)
            {                
                throw ex;
            }
            return hoja.IdHoja;
        }

        public int actualizarHojaReclamacion(RecHojaReclamacion hoja)
        {
            try
            {
                hoja.IdHoja = _hojaReclamacionDAL.actualizar(hoja);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return hoja.IdHoja;
        }

        public List<RecHojaReclamacion> listarHojaReclamacion(RecHojaReclamacion hoja)
        {
            List<RecHojaReclamacion> lista = new List<RecHojaReclamacion>();
            try
            {
                hoja.FecReclamo=(hoja.FlReclamo)?hoja.FecReclamo:DateTime.Now;
                hoja.FecReclamoFin = (hoja.FlReclamoFin) ? hoja.FecReclamoFin : DateTime.Now;
                lista = _hojaReclamacionDAL.listar(hoja);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lista;
        }

        public RecHojaReclamacion obtenerHojaReclamacion(int codigo)
        {
            RecHojaReclamacion lista = new RecHojaReclamacion();
            try
            {
                lista = _hojaReclamacionDAL.obtener(codigo);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lista;
        }

        public int eliminarHojaReclamacion(int codigo)
        {
            int resultado = 0;
            try
            {
                resultado = _hojaReclamacionDAL.eliminar(codigo);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return resultado;
        }

        public int obtenerNumHoja()
        {
            int resultado = 0;
            try
            {
                resultado = _hojaReclamacionDAL.obtenerNumHoja();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return resultado;
        }

        public List<RecHojaReclamacion> listarHojaReclamacionPendientes(RecHojaReclamacion hoja)
        {
            List<RecHojaReclamacion> lista = new List<RecHojaReclamacion>();
            try
            {
                hoja.FecReclamo = (hoja.FlReclamo) ? hoja.FecReclamo : DateTime.Now;
                hoja.FecReclamoFin = (hoja.FlReclamoFin) ? hoja.FecReclamoFin : DateTime.Now;
                lista = _hojaReclamacionDAL.listarPendientes(hoja);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return lista;
        }

        #endregion
  

    }
}
